package com.alibaba.citrus.cr.mn.order.center.common.util;

import org.apache.commons.lang.StringUtils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Objects;

/**
 * Chen.mu
 * 2023/5/11
 * 金额str，元转分
 **/
public class MoneyUtils {

    /**
     * 将金额元 转为分，获得String类型
     */
    public static String moneyStrYuan2Fen(String originMoneyStr) {
        if (StringUtils.isBlank(originMoneyStr)) {
            return "";
        }
        return new BigDecimal(originMoneyStr).multiply(new BigDecimal("100")).setScale(0, RoundingMode.DOWN).toPlainString();
    }

    /**
     * 将金额元 转为分，获得Long类型
     */
    public static Long moneyLongYuan2Fen(Long originMoneyStr) {
        if (Objects.isNull(originMoneyStr)) {
            return null;
        }
        return new BigDecimal(originMoneyStr).multiply(new BigDecimal("100")).setScale(0, RoundingMode.DOWN).longValue();
    }

    public static String moneyFen2Yuan(Long fen) {
        return moneyFen2Yuan(fen, Boolean.TRUE);
    }

    public static String moneyFen2Yuan(String fen) {
        if (StringUtils.isBlank(fen)) {
            return "";
        }
        return moneyFen2Yuan(Long.parseLong(fen), Boolean.FALSE);
    }

    public static String moneyFen2Yuan(Long fen, Boolean isReturnZero) {
        if (fen == null) {
            if (isReturnZero) {
                return BigDecimal.ZERO.toPlainString();
            }
            return "";
        }
        if (Long.valueOf(0L).equals(fen)) {
            return "0";
        }
        return new BigDecimal(fen).divide(new BigDecimal("100"), 2, RoundingMode.DOWN).toPlainString();
    }

    public static String moneyFen2YuanStr(String fen) {
        if (StringUtils.isBlank(fen)) {
            return "";
        }
        if ("0".equals(fen)) {
            return fen;
        }
        return new BigDecimal(fen).divide(new BigDecimal("100"), 2, RoundingMode.DOWN).toPlainString();
    }

}
